//用户信息token的管理类
import 'package:shared_preferences/shared_preferences.dart';

class TokenManager {
  //存取用户信息的key
  final _key = 'shenling_token';
  //本地的token
  static String? _token;
  //单例对象 通过_instance来创建
  static TokenManager? _instance;
  //私有构造函数(自定义构造函数方法)
  TokenManager._internal();

  //工厂方法 重写默认的构造函数
  factory TokenManager() {
    _instance ??= TokenManager._internal();
    return _instance!;
  }

  //初始化token
  Future<void> init() async {
    //获取三方插件的首选项实例
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    //获取token  如果没有则返回空字符串
    _token = prefs.getString(_key) ?? '';
  }

  //保存token
  Future<void> saveToken(String token) async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.setString(_key, token);
    // 保存本地token
    _token = token;
  }

  //获取token
  String? getToken() {
    return _token;
  }

  //移除token
  Future<void> removeToken() async {
    final SharedPreferences prefs = await SharedPreferences.getInstance();
    await prefs.remove(_key);
    _token = '';
  }
}
